package net.heartbeat.handler;

import java.io.IOException;

/**
 * 心跳信号接收器
 * 
 * @author Bai Yu
 *
 * @param <HeartbeatType>
 *            心跳包的类型
 */
public interface HeartbeatReceiver {
	/**
	 * 打开输入流，用于传输心跳包<br>
	 * 阻塞，直到收到传输请求
	 * 
	 * @return 已打开的输入流；关闭该输入流能够关闭相关联的任何其他资源<br>
	 *         调用者应在使用完毕后关闭该输入流以释放资源
	 * @throws FailedSourceException
	 *             数据源失效，故打开输入流失败<br>
	 *             此时接收器仍然可用，可继续打开新的输出流
	 * @throws IOException
	 *             接收器失效，故打开输入流失败<br>
	 *             所占用的资源将被自动释放
	 */
	HeartbeatMessage accept() throws FailedSourceException, IOException;
}
